import { createRouter, createWebHistory } from 'vue-router'
import { constantRoutes } from './routes'
import { useAuthStore } from '@/stores'
import type { RouteRecordRaw } from 'vue-router'

// 2. 配置路由
const routes: RouteRecordRaw[] = constantRoutes

// 1.返回一个 router 实列，为函数，里面有配置项（对象） history
const router = createRouter({
  // 路由模式 createWebHashHistory 为 hash 模式
  // 去除vue访问页面时的#/
  history: createWebHistory(import.meta.env.VITE_ROUTE_BASE),
  routes,
  scrollBehavior(_to, _from, savedPosition) {
    // savedPosition 会在你使用浏览器前进或后退按钮时候生效
    // 和使用 router.go() 或 router.back() 效果一致
    if (savedPosition) {
      return savedPosition
    } else {
      const dom = document.querySelector('.app-main')
      if (dom) {
        dom.scrollTop = 0
      }
      // 如果不是通过上述行为切换组件，就会让页面回到顶部
      return { left: 0, top: 0 }
    }
  }
})

// 重置路由 移除动态添加路由
export function resetRouter() {
  const addRoutes = useAuthStore().addRoutes
  addRoutes.forEach(item => {
    const name = item.name as string
    if (router.hasRoute(name)) {
      router.removeRoute(name)
    }
  })
}

// 3导出路由   然后去 main.ts 注册 router.ts
export default router
